package jp.hitting.android.view.sample; import jp.hitting.android.view.PageControl; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.view.GestureDetector; import android.view.MotionEvent; import android.view.View; import android.view.GestureDetector.OnGestureListener; import android.view.View.OnTouchListener; import android.view.animation.AnimationUtils; import android.widget.ViewFlipper; public class MainActivity extends Activity { private static int pageNum; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.setContentView(R.layout.activity_main); final ViewFlipper flipper = (ViewFlipper) this .findViewById(R.id.flipper); final PageControl pageControl = (PageControl) this .findViewById(R.id.pageControl); pageNum = 0; final Context context = this; final GestureDetector gestureDetector = new GestureDetector(this, new OnGestureListener() { @Override public boolean onSingleTapUp(MotionEvent e) { return false; } @Override public void onShowPress(MotionEvent e) { } @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { return false; } @Override public void onLongPress(MotionEvent e) { } @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { float dx = Math.abs(velocityX); float dy = Math.abs(velocityY); if (dx > dy && dx > 300) { if (e1.getX() < e2.getX()) { flipper.setInAnimation(AnimationUtils .loadAnimation(context, R.anim.left_in)); flipper.setOutAnimation(AnimationUtils .loadAnimation(context, R.anim.right_out)); flipper.showPrevious(); pageNum--; if (pageNum < 0) { pageNum = 2; } } else { flipper.setInAnimation(AnimationUtils .loadAnimation(context, R.anim.right_in)); flipper.setOutAnimation(AnimationUtils .loadAnimation(context, R.anim.left_out)); flipper.showNext(); pageNum++; if (pageNum > 2) { pageNum = 0; } } pageControl.setCurrentPage(pageNum); return true; } return false; } @Override public boolean onDown(MotionEvent e) { return false; } }); flipper.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { gestureDetector.onTouchEvent(event); return true; } }); } }